package org.xinjiang.data.migration.flush.enums;

import lombok.Getter;
import org.springframework.util.StringUtils;

/**
 * 职务
 */
@Getter
public enum DutiesEnum {
    副厅长("", "", "104", "副厅长", 5),
    局长("", "", "105", "局长", 6),
    副局长("0106", "副局长", "106", "副局长", 7),
    总队长("", "", "107", "总队长", 8),
    副总队长("", "", "108", "副总队长", 9),
    处长("", "", "109", "处长", 10),
    副处长("", "", "110", "副处长", 11),
    支队长("", "", "111", "支队长", 12),
    副支队长("", "", "112", "副支队长", 13),
    科长("0113", "科长", "113", "科长", 14),
    副科长("0114", "副科长", "114", "副科长", 15),
    大队长("", "", "115", "大队长", 16),
    副大队长("", "", "116", "副大队长", 17),
    股长("", "", "117", "股长", 18),
    副股长("0118", "副股长", "118", "副股长", 19),
    所长("0119", "所长", "119", "所长", 20),
    副所长("0120", "副所长", "120", "副所长", 21),
    中队长("", "", "121", "中队长", 22),
    副中队长("", "", "122", "副中队长", 23),
    司法所专职工作人员("0123", "司法所专职工作人员", "123", "司法所专职工作人员（包括政法专项、地方行政、事业编制的一般工作人员）", 24),
    非领导职务("", "", "2", "非领导职务", 25),
    巡视员("0201", "巡视员", "201", "巡视员", 26),
    副巡视员("", "", "202", "副巡视员", 27),
    调研员("0203", "调研员", "203", "调研员", 28),
    副调研员("0204", "副调研员", "204", "副调研员", 29),
    主任科员("0205", "主任科员", "205", "主任科员", 30),
    副主任科员("0206", "副主任科员", "206", "副主任科员", 31),
    科员("0207", "科员", "207", "科员", 32),
    办事员("0208", "办事员", "208", "办事员", 33),
    政工职务("", "", "3", "政工职务", 34),
    政委("", "", "301", "政委", 35),
    教导员("0302", "教导员", "302", "教导员", 36),
    指导员("0303", "指导员", "303", "指导员", 37),
    社区矫正用警情况("", "", "4", "社区矫正用警情况", 38),
    监狱挂职警察("0401", "监狱挂职警察", "401", "监狱挂职警察", 39),
    监狱借调警察("", "", "402", "监狱借调警察", 40),
    戒毒所挂职警察("", "", "403", "戒毒所挂职警察", 41),
    戒毒所借调警察("", "", "404", "戒毒所借调警察", 42),
    其他警察("0405", "其他警察", "405", "其他警察", 43);
    /**
     * 数据来源code
     */
    private String sourceCode;

    /**
     * 数据来源名成
     */
    private String sourceName;


    private String targetCode;

    private String targetName;

    private Integer targetId;

    DutiesEnum(String sourceCode, String sourceName, String targetCode, String targetName, Integer targetId) {
        this.sourceCode = sourceCode;
        this.sourceName = sourceName;
        this.targetCode = targetCode;
        this.targetName = targetName;
        this.targetId = targetId;
    }

    public String toTargetId() {
        return String.valueOf(getTargetId().intValue());
    }

    public static DutiesEnum toCode(String sourceCode) {
        if (StringUtils.isEmpty(sourceCode)) {
            return 政工职务;
        }
        for (DutiesEnum value : DutiesEnum.values()) {
            if (value.sourceCode.equals(sourceCode)) {
                return value;
            }
        }
        if (sourceCode.startsWith("0")) {
            for (DutiesEnum value : DutiesEnum.values()) {
                if (value.targetCode.equals(sourceCode.substring(1))) {
                    return value;
                }
            }
        }
        return 政工职务;
    }
}
